/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package CapadeDatos;

import java.sql.CallableStatement;
import java.util.ArrayList;
import modelo.beancarrera1;
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.Statement;
import javax.swing.JOptionPane;
import modelo.beancarrera;
import modelo.beanusuario;
import proyectocatalina.Login;


/**
 *
 * @author hans
 */
public class DaoVerCarreras {
public static  ArrayList datoscarrera(){
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="call proc_carreraestado() ";
            ResultSet rs =stm.executeQuery(sql);
            while (rs.next()){
                   beancarrera1 carrera  = new beancarrera1();
                   carrera.setNombrecarrera(rs.getString(1));
                   carrera.setNombreestado(rs.getString(2));
                   lista.add(carrera);
            }
    }catch(Exception e){System.out.print(e);
   }return lista;
  }
    private beanusuario User;
public void insertarcarrera(String cod_carrera ,int cod_famcarr, String nombre_carrera,String num_autorizacion,java.sql.Date fecha_autorizacion,String num_revalidacion, java.sql.Date fecha_revalidacion){
        Boolean verdad = false;
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
//            Statement stm = cn.createStatement();
            String updateString = "Call proc_registrocarrera(?,?,?,?,?,?,?)";
            CallableStatement insertcarrera = (CallableStatement) cn.prepareCall(updateString);
            insertcarrera.setString(1,cod_carrera);
            insertcarrera.setInt(2, cod_famcarr);
            insertcarrera.setString(3, nombre_carrera);
            insertcarrera.setString(4, num_autorizacion);
            insertcarrera.setDate(5, fecha_autorizacion);
            insertcarrera.setString(6, num_revalidacion);
            insertcarrera.setDate(7, fecha_revalidacion);
            User = Login.usuarioglobal;
            String sql3 = "Call proc_auditoria(?,?,?,?,?,?)";
            Connection cn4 = ConexionBD.getInstance().getConnection();
            CallableStatement insertauditoria = cn4.prepareCall(sql3);
            insertauditoria.setInt(1, User.getIdUsuario());
            insertauditoria.setString(2, "Periodo");
            insertauditoria.setString(3, "insertar");
            insertauditoria.setString(4, "nulo");
            insertauditoria.setString(5,cod_carrera+", "+cod_famcarr+", "+nombre_carrera+", "+num_autorizacion+", "+fecha_autorizacion+", "+num_revalidacion+","+fecha_revalidacion);
            insertauditoria.setString(6,"nulo");
            if(insertcarrera.execute()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO INGRESADO");
            }
            else {
                verdad = true;
                insertauditoria.execute();
                JOptionPane.showMessageDialog(null,"INGRESADO");
            }
    }catch(Exception e){System.out.print(e);
   }
   }
public void actualizarcarrera(String codcarrera,String nombrecarrera){
Boolean verdad = false;
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Call proc_actualizar_carrera('"
                 +  codcarrera +  "','"
                    +  nombrecarrera +  "');";
            String datosnuevos = codcarrera + ", "+nombrecarrera;
            String sql4 = "Select cod_carrera,nombre_Carrera from carrera where cod_carrera = '"+codcarrera+"';";
            Connection cn4 = ConexionBD.getInstance().getConnection();
            Statement stm2 = cn4.createStatement();
            ResultSet rs =stm2.executeQuery(sql4);
            String datosantiguos =  "";
            while (rs.next()){
                datosantiguos = datosantiguos + rs.getString(1) + "," +
                rs.getString(2);                  
            }
            
            if(stm.executeQuery(sql).wasNull()){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO SE AH ACTUALIZADO");
            }
            else {
                verdad = true;
                 User = Login.usuarioglobal;
                String sql3 = "Call proc_auditoria(?,?,?,?,?,?)";
                Connection cn5 = ConexionBD.getInstance().getConnection();
                CallableStatement insertauditoria = cn5.prepareCall(sql3);
                insertauditoria.setInt(1, User.getIdUsuario());
                insertauditoria.setString(2, "Carrera");
                insertauditoria.setString(3, "actualizar");
                insertauditoria.setString(4, datosantiguos);
                insertauditoria.setString(5,datosnuevos);
                insertauditoria.setString(6,"nulo"); 
                insertauditoria.execute();
                JOptionPane.showMessageDialog(null,"SE ACTULIZO CORRECTAMENTE");
            }
    }catch(Exception e){System.out.print(e);
   }
   }
public static  ArrayList carrera(){
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="SELECT cod_carrera,nombre_carrera,estado from carrera where estado = 'Activo';";
            ResultSet rs =stm.executeQuery(sql);
            while (rs.next()){
                   beancarrera carrera  = new beancarrera();
                   carrera.setCodigo(rs.getString(1));
                   carrera.setNombrecarrera(rs.getString(2));
                   carrera.setEstado(rs.getString(3));
                   lista.add(carrera);
            }
    }catch(Exception e){System.out.print(e);
   }return lista;
  }
public void bajarcarrera(String codigo){
        Boolean verdad = false;
        
        ArrayList lista = new ArrayList();
    try{
            Connection cn = ConexionBD.getInstance().getConnection();
            Statement stm = cn.createStatement();
            String sql ="Update carrera set estado = 'INACTIVO' where carrera.cod_carrera = "+"'"+ codigo + "';";

            if(stm.execute(sql)){
               verdad = false;
               JOptionPane.showMessageDialog(null,"NO ACTUALIZADO");
            }
            else {
                verdad = true;
                JOptionPane.showMessageDialog(null,"ACTUALIZADO");
            }
    }catch(Exception e){System.out.print(e);
    JOptionPane.showMessageDialog(null,("Se ah presentado un error: "+"\n"+e+"\n"+ "Comuniquese con su administrador"));

}
}
}
